package com.building18.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

// 泛型类，T：代表任何类型，用于封装接口返回结果
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Result<T> {
    // 返回的状态码：200成功；500失败，也可扩展其他自定义状态码
    private Integer code;
    // 返回的提示内容，用于描述操作结果信息
    private String msg;
    // 返回的数据，泛型 T 适配不同类型的返回数据
    private T obj;

    // 操作成功，无返回数据的情况
    public static <T> Result<T> ok() {
        return new Result<>(200, "操作成功!", null);
    }
    public static <T> Result<T> ok(String msg) {
        return new Result<>(200, msg, null);
    }

    // 操作成功，有返回数据的情况
    public static <T> Result<T> ok(T obj,String msg) {
        return new Result<>(200, msg, obj);
    }

    // 操作失败，使用默认提示的情况
    public static <T> Result<T> fail() {
        return new Result<>(500, "操作失败!", null);
    }

    // 操作失败，自定义提示内容的情况
    public static <T> Result<T> fail(String msg) {
        return new Result<>(500, msg, null);
    }
}